package com.kmxd.ams.core.util;

import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import java.util.List;
import org.apache.commons.lang.StringEscapeUtils;

/**
 * json转义问题处理
 *
 * @author zuolg
 */
public class JSONUtils {
  /**
   * 对象转换
   *
   * @param jsonStr
   * @return
   */
  public static JSONObject parseObj(String jsonStr) {
    JSONObject jsonObject;
    try {
      jsonObject = JSONUtil.parseObj(jsonStr);
    } catch (Exception ex) {
      jsonObject = JSONUtil.parseObj(StringEscapeUtils.unescapeJava(jsonStr));
    }
    return jsonObject;
  }

  public static JSONArray parseArray(String jsonStr) {
    return new JSONArray(StringEscapeUtils.unescapeJava(jsonStr));
  }

  public static <T> T toBean(String jsonString, Class<T> beanClass) {
    return JSONUtil.toBean(parseObj(jsonString), beanClass);
  }

  /**
   * 列表转换
   *
   * @param jsonArray
   * @param elementType
   * @return
   * @param <T>
   */
  public static <T> List<T> toList(String jsonArray, Class<T> elementType) {
    return JSONUtil.toList(StringEscapeUtils.unescapeJava(jsonArray), elementType);
  }
}
